/**************************************************************************************** Import */
import {Modal, Toast} from 'antd-mobile-rn';

/**************************************************************************************** Class */
export default class Dialog {

    /**
	 * 只有文字的吐司反馈
	 * 
	 * @param {String} text 消息内容
	 * @param {Int} duration 持续秒数，默认1.5
	 * @param {Boolean} mask 是否启用遮罩层，防止触摸穿透，默认false
	 * @param {Function} callback 完成时回调，默认为null
	 */
    static text(text, duration = 1.5, mask = false, callback = null) {
		Toast.info(text, duration, callback, mask);
    }

    /**
	 * 带有成功图标的吐司反馈
	 * 
	 * @param {String} text 消息内容
	 * @param {Int} duration 持续秒数，默认1.5
	 * @param {Boolean} mask 是否启用遮罩层，防止触摸穿透，默认false
	 */
    static success(text, duration = 1.5, mask = false, callback = null) {
		Toast.success(text, duration, callback, mask);
    }

    /**
	 * 带有错误图标的吐司反馈
	 * 
	 * @param {String} text 消息内容
	 * @param {Int} duration 持续秒数，默认1.5
	 * @param {Boolean} mask 是否启用遮罩层，防止触摸穿透，默认false
	 */
    static error(text, duration = 1.5, mask = false, callback = null) {
		Toast.fail(text, duration, callback, mask);
    }

    /**
	 * 带有未联网图标的吐司反馈
	 * 
	 * @param {String} text 消息内容
	 * @param {Int} duration 持续秒数，默认1.5
	 * @param {Boolean} mask 是否启用遮罩层，防止触摸穿透，默认false
	 */
    static offline(text, duration = 1.5, mask = false, callback = null) {
		Toast.offline(text, duration, callback, mask);
    }

    /**
	 * 显示Loading指示器
	 * 
	 * @param {String} text 消息内容，默认空字符串
	 * @param {Boolean} mask 是否启用遮罩层，防止触摸穿透，默认false
	 * @param {Function} callback 回调方法，默认null
	 */
    static loading(text = '', mask = false, callback = null) {
		Toast.loading(text, 0, callback, mask);
    }

    /**
	 * 隐藏所有Toast
	 */
    static hide(text, duration, mask = false) {
		Toast.hide();
    }

    /**
	 * 显示alert对话框
	 * 
	 * @param {String} title 消息标题
     * @param {String} content 消息内容
	 * @param {Function} callback 用户点击确认后的回调方法
	 */
	static alert(title, content, callback) {
        Modal.alert(title, content, [
            { text: '确定', onPress: callback },
        ]);
    }

    /**
	 * 显示confirm对话框
	 * 
	 * @param {String} title 消息标题
     * @param {String} content 消息内容
	 * @param {Function} callOK 用户点击确认后的回调方法
     * @param {Function} callCancel 用户点击取消后的回调方法
	 */
	static confirm(title, content, callOK, callCancel) {
        Modal.alert(title, content, [
            { text: '取消', onPress: callCancel, style: 'cancel' },
            { text: '确定', onPress: callOK },
        ]);
    }
}
